Skip to content

Conversation

@pillo79
Copy link

@pillo79 pillo79 commented Nov 26, 2025

This pull request refactors the GitHub Actions workflow for packaging the core, splitting the build pipeline into more granular jobs, improving artifact handling and cleanup, and enhancing error reporting in packaging scripts.

The main goals are to improve parallelization and provide clearer diagnostics during packaging:

  • The workflow is split into distinct jobs: build-env (fetches the Zephyr environment only once), build-board (builds board-specific binaries in parallel), package-core (packages each core artifact in paraallel), and test-core (tests each board in parallel). This change now makes the whole CI pipeline basically independent of the number of boards / packages being tested.

  • CI now tries to run as much as possible in case an error is detected, while still indicating which parts of the CI build are failing. Build failures for individual boards are summarized and included in the GitHub Actions step summary, and the full contents of the build directory can be retrieved for easy inspection. Tests are attempted even when some of the boards did not compile successfully.

See here for a sample run that includes a failed Giga build.

Future work could move the Zephyr env preparation step using Docker; I think that should speed up the process compared to the current artifact upload/download.

No longer useful for any purpose.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Save the prepared build environment as an artifact after the initial
setup, to allow for multiple jobs to reuse it without repeating the
initial Zephyr configuration steps.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Convert the sequential building and packaging of all board binaries into
a matrix job, allowing parallel execution. This makes the workflow more
efficient and independent of the number of supported boards.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Use a common function to handle logging messages for GitHub Actions and
for the console, for a cleaner output.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>

:1
These changes allow the packaging and testing jobs to start even if some
of the build jobs have resulted in errors, thus maximizing the amount of
testing that can be performed in parallel CI workflows even if one board
is causing issues.

The build step artifacts will be saved with a "failed-" prefix in case of
errors and can be inspected for further information.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant